import { saveUser, findUserByUsername } from './storageService';
import { generateId } from './storageService';

// 保存当前用户状态到localStorage
const CURRENT_USER_KEY = 'currentUser';

// 用户注册
export function register(username, password, role) {
  // 检查用户名是否已存在
  if (findUserByUsername(username)) {
    throw new Error('用户名已存在');
  }

  // 创建新用户
  const newUser = {
    id: generateId(),
    username,
    password, // 简易系统中明文存储，实际项目中需要加密
    role
  };

  // 保存用户到存储
  if (saveUser(newUser)) {
    return newUser;
  } else {
    throw new Error('注册失败，请重试');
  }
}

// 用户登录
export function login(username, password) {
  // 查找用户
  const user = findUserByUsername(username);
  
  // 验证用户是否存在
  if (!user) {
    throw new Error('用户不存在');
  }
  
  // 验证密码
  if (user.password !== password) {
    throw new Error('密码错误');
  }
  
  // 保存当前用户状态
  setCurrentUser(user);
  
  return user;
}

// 退出登录
export function logout() {
  localStorage.removeItem(CURRENT_USER_KEY);
}

// 设置当前用户
export function setCurrentUser(user) {
  try {
    localStorage.setItem(CURRENT_USER_KEY, JSON.stringify(user));
    return true;
  } catch (error) {
    console.error('保存用户状态失败:', error);
    return false;
  }
}

// 获取当前用户
export function getCurrentUser() {
  try {
    const user = localStorage.getItem(CURRENT_USER_KEY);
    return user ? JSON.parse(user) : null;
  } catch (error) {
    console.error('获取用户状态失败:', error);
    return null;
  }
}

// 检查用户是否已登录
export function isAuthenticated() {
  return !!getCurrentUser();
}

// 检查用户角色
export function isRecruiter() {
  const user = getCurrentUser();
  return user && user.role === 'recruiter';
}

export function isApplicant() {
  const user = getCurrentUser();
  return user && user.role === 'applicant';
}